INSPIRE cfMeDIP-seq Analysis

In the interest of transparency, openness, and reproducibility, this report contains the analysis code which generates all of the figures and numerical results for the manuscript entitled Early changes in tumor-agnostic cell-free methylomes and fragmentomes predict outcomes in patients with solid tumors treated with pembrolizumab. In it, we report on the results of cell-free methylated DNA immunoprecipitation and sequencing (cfMeDIP-seq) from the investigator-initiated phase 2 study of pembrolizumab immunological response evaluation (INSPIRE).

Using Rstudio or the knitr package in R, all results reported in the manuscript can be regenerated in full using this RMarkdown file. All of the processed, deidentified data are stored in figure_data.Rds as dataframes and are attached to the environment in the setup block. Our nomenclature is variable names starting with df to denote source data tables and plotdata for processed dataframes used as intermediates to generate figures. Below is the high-level description of source dataframe.

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

Supplemental Figure 1

Supplemental Figure 2

Supplemental Figure 3

Supplemental Figure 4

Supplemental Figure 5

Supplemental Figure 6

Supplemental Figure 7

Supplemental Figure 8

Supplemental Figure 9

Supplemental Figure 10

Supplemental Figure 11

Supplemental Figure 12

Supplemental Figure 13

Supplemental Figure 14

Numeric results

The following table shows every numeric result reported in the manuscript. This allows readers to review exactly how every numeric result was calculated.

variable
val_ahr_csm_baseline_os: 0.57
val_ahr_csm_baseline_os_lci: 0.33
val_ahr_csm_baseline_os_p: p=0.044
val_ahr_csm_baseline_os_uci: 0.98
val_ahr_csm_baseline_pfs: 0.63
val_ahr_csm_baseline_pfs_lci: 0.37
val_ahr_csm_baseline_pfs_p: p=0.091
val_ahr_csm_baseline_pfs_uci: 1.08
val_ahr_csm_c3b_os: 0.45
val_ahr_csm_c3b_os_lci: 0.20
val_ahr_csm_c3b_os_p: p=0.047
val_ahr_csm_c3b_os_uci: 0.99
val_ahr_csm_c3b_pfs: 0.51
val_ahr_csm_c3b_pfs_lci: 0.26
val_ahr_csm_c3b_pfs_p: p=0.047
val_ahr_csm_c3b_pfs_uci: 0.99
val_anydecrease_ahr_lci_os: 0.14
val_anydecrease_ahr_lci_pfs: 0.16
val_anydecrease_ahr_os: 0.30
val_anydecrease_ahr_p_os: p=0.001
val_anydecrease_ahr_p_pfs: p < 0.001
val_anydecrease_ahr_pfs: 0.33
val_anydecrease_ahr_uci_os: 0.61
val_anydecrease_ahr_uci_pfs: 0.69
val_cfmedip_by_response_wilcox_p: p=0.002
val_cfmedip_median_decrease_responder: -51.1% [range: -99.5, 58.3]
val_cfmedip_median_rise_nonresponder: -2.77% [range: -75.74, 191.34]
val_clearance_auroc: 0.902
val_clearance_optimal_threshold: -1.75
val_clearance_optimal_threshold_F1: 0.545
val_clearance_threshold_sensitivity: 54.5%
val_clearance_threshold_specificity: 95.8%
val_cmc_csm_concordant: 38
val_cmc_csm_discordant: 15
val_cmc_csm_discordant_low: 9
val_cmc_csm_low_threshold: 1
val_combined_os_cmc_ahr: 0.59
val_combined_os_cmc_ahr_lci: 0.29
val_combined_os_cmc_ahr_p: p=0.132
val_combined_os_cmc_ahr_uci: 1.17
val_combined_os_csm_ahr: 0.47
val_combined_os_csm_ahr_lci: 0.24
val_combined_os_csm_ahr_p: p=0.031
val_combined_os_csm_ahr_uci: 0.93
val_combined_pfs_cmc_ahr: 0.66
val_combined_pfs_cmc_ahr_lci: 0.32
val_combined_pfs_cmc_ahr_p: p=0.274
val_combined_pfs_cmc_ahr_uci: 1.38
val_combined_pfs_csm_ahr: 0.39
val_combined_pfs_csm_ahr_lci: 0.18
val_combined_pfs_csm_ahr_p: p=0.016
val_combined_pfs_csm_ahr_uci: 0.84
val_cor_fls_csm_p: p < 0.001
val_cor_fls_csm_r: 0.655
val_correl_cfmedip_cmc_global_r: 0.848
val_cox_os_hr_cohortD: 0.20
val_cox_os_hr_cohortD_lci: 0.07
val_cox_os_hr_cohortD_p: p=0.004
val_cox_os_hr_cohortD_uci: 0.60
val_cox_pfs_hr_cohortB: 2.46
val_cox_pfs_hr_cohortB_lci: 1.28
val_cox_pfs_hr_cohortB_p: p=0.007
val_cox_pfs_hr_cohortB_uci: 4.70
val_cox_pfs_hr_cohortC: 2.11
val_cox_pfs_hr_cohortC_lci: 1.10
val_cox_pfs_hr_cohortC_p: p=0.024
val_cox_pfs_hr_cohortC_uci: 4.05
val_cox_pfs_hr_cohortD: 0.31
val_cox_pfs_hr_cohortD_lci: 0.11
val_cox_pfs_hr_cohortD_p: p=0.023
val_cox_pfs_hr_cohortD_uci: 0.85
val_csm_baseline_vs_control_wilcox_p: p < 0.001
val_csm_c3_vs_control_wilcox_p: p < 0.001
val_csm_cancernormal_wilcox_p: p < 0.001
val_csm_cpg_count_nonimmune: 200
val_csm_latercycle_vs_control_wilcox_p: p=0.001
val_deltacmc_os_ahr: 0.45
val_deltacmc_os_ahr_lci: 0.23
val_deltacmc_os_ahr_p: p=0.018
val_deltacmc_os_ahr_uci: 0.87
val_deltacmc_pfs_ahr: 0.45
val_deltacmc_pfs_ahr_lci: 0.24
val_deltacmc_pfs_ahr_p: p=0.014
val_deltacmc_pfs_ahr_uci: 0.85
val_deltacsm_os_ahr: 0.40
val_deltacsm_os_ahr_lci: 0.21
val_deltacsm_os_ahr_p: p=0.005
val_deltacsm_os_ahr_uci: 0.75
val_deltacsm_pfs_ahr: 0.35
val_deltacsm_pfs_ahr_lci: 0.18
val_deltacsm_pfs_ahr_p: p=0.003
val_deltacsm_pfs_ahr_uci: 0.69
val_distinct_patients_cfmedip: 87
val_fl_signif_variable_percent: 31.7%
val_fls_baseline_vs_control_wilcox_p: p < 0.001
val_fls_c3_vs_control_wilcox_p: p < 0.001
val_fls_cancernormal_wilcox_p: p < 0.001
val_fls_latercycle_vs_control_wilcox_p: p=0.005
val_fls_percent_variability_temporal: 67.7%
val_followup_median_range_clearance_eithermethod_months: 59.5 [range: 37.6, 64.4]
val_fragment_ratio_variability_cancer_vs_normal_percent: 30.3% [range: -41.1, 227.9]
val_library_read_count: 80.0 [range: 9.9, 176.2]
val_max_fu: 64.4
val_max_fu_alive: 64.4
val_max_os_melanoma: 64.4
val_max_pfs: 63.5
val_max_pfs_melanoma: 63.5
val_median_csm_cancer_c3: 0.151
val_median_csm_cancer_latercycle: 0.0745
val_median_csm_cancer_sb: 1.47
val_median_csm_control: 0.0418
val_median_fls_cancer_c3: -0.0803
val_median_fls_cancer_latercycle: -0.110
val_median_fls_cancer_sb: 0.151
val_median_fls_control: -0.213
val_median_fu: 11.5
val_median_fu_alive: 59.8
val_median_os_melanoma: 55.1
val_median_pfs: 1.90
val_median_pfs_melanoma: 35.0
val_min_fu: 0.600
val_min_fu_alive: 46.7
val_min_os_melanoma: 1.10
val_min_pfs: 0.300
val_min_pfs_melanoma: 0.700
val_mva_deltacmc_os_ahr: 0.57
val_mva_deltacmc_os_ahr_lci: 0.29
val_mva_deltacmc_os_ahr_p: p=0.1
val_mva_deltacmc_os_ahr_uci: 1.12
val_mva_deltacmc_pfs_ahr: 0.51
val_mva_deltacmc_pfs_ahr_lci: 0.27
val_mva_deltacmc_pfs_ahr_p: p=0.04
val_mva_deltacmc_pfs_ahr_uci: 0.97
val_mva_deltacsm_os_ahr: 0.45
val_mva_deltacsm_os_ahr_lci: 0.23
val_mva_deltacsm_os_ahr_p: p=0.019
val_mva_deltacsm_os_ahr_uci: 0.88
val_mva_deltacsm_pfs_ahr: 0.37
val_mva_deltacsm_pfs_ahr_lci: 0.19
val_mva_deltacsm_pfs_ahr_p: p=0.005
val_mva_deltacsm_pfs_ahr_uci: 0.74
val_n_cohort_a: 19
val_n_cohort_b: 22
val_n_cohort_c: 21
val_n_cohort_d: 12
val_n_cohort_e: 13
val_n_controls: 100
val_n_controls_awadalla: 72
val_n_csm_bins_in_islands: 184
val_n_csm_bins_in_shores: 13
val_n_csm_cmc_both_timepoints: 53
val_n_decrease_nonresponder: 41
val_n_decrease_responder: 14
val_n_fl_variable_regions: 10
val_n_fl_variable_regions_normal: 6
val_n_natera_cfmedip_baseline: 75
val_n_natera_cfmedip_c3b: 53
val_n_nonresponder: 61
val_n_responder: 15
val_percent_csm_bins_in_islands: 92%
val_percent_csm_bins_in_shores: 6.5%
val_percent_decrease_nonresponder: 67.2%
val_percent_decrease_responder: 93.3%
val_percent_discordant: 28.3%
val_responder_decrease_fisherp: p=0.054
val_samples_cfmedip: 204
val_samples_cfmedip_baseline: 85
val_samples_cfmedip_c3: 56
val_total_autosome_length: 2875001522
val_total_significant_variable_length: 910499990
val_total_significant_variable_length_gb: 0.910
val_total_significant_variable_length_mb: 910.
val_uva_fls_os_ahr: 0.40
val_uva_fls_os_ahr_lci: 0.20
val_uva_fls_os_ahr_uci: 0.77
val_uva_fls_os_p: p=0.006
val_uva_fls_pfs_ahr: 0.51
val_uva_fls_pfs_ahr_lci: 0.26
val_uva_fls_pfs_ahr_uci: 1.00
val_uva_fls_pfs_p: p=0.0503

R environment details

For reproducibility purposes, the complete R sessionInfo used to generate this report is shown below.

## R version 4.2.1 (2022-06-23)
## Platform: x86_64-apple-darwin17.0 (64-bit)
## Running under: macOS Big Sur ... 10.16
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.2/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.2/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] en_CA.UTF-8/en_CA.UTF-8/en_CA.UTF-8/C/en_CA.UTF-8/en_CA.UTF-8
## 
## attached base packages:
## [1] grid      stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
##  [1] data.table_1.14.2   yaml_2.3.5          ggrepel_0.9.1      
##  [4] kernlab_0.9-32      pander_0.6.5        png_0.1-7          
##  [7] NMF_0.24.0          Biobase_2.56.0      BiocGenerics_0.42.0
## [10] cluster_2.1.4       rngtools_1.5.2      pkgmaker_0.32.2    
## [13] registry_0.5-1      RColorBrewer_1.1-3  tibble_3.2.1       
## [16] readr_2.1.3         tidyr_1.2.1         dplyr_1.1.1        
## [19] viridis_0.6.2       viridisLite_0.4.1   arrow_9.0.0.2      
## [22] ggbeeswarm_0.6.0    ggthemr_1.1.0       lubridate_1.8.0    
## [25] survminer_0.4.9     ggpubr_0.4.0        survival_3.4-0     
## [28] cowplot_1.1.1       forestmodel_0.6.4   ggplot2_3.4.0      
## 
## loaded via a namespace (and not attached):
##  [1] ggtext_0.1.2      nlme_3.1-159      bit64_4.0.5       doParallel_1.0.17
##  [5] tools_4.2.1       backports_1.4.1   bslib_0.4.0       utf8_1.2.2       
##  [9] R6_2.5.1          vipor_0.4.5       mgcv_1.8-40       DBI_1.1.3        
## [13] colorspace_2.0-3  withr_2.5.0       tidyselect_1.2.0  gridExtra_2.3    
## [17] bit_4.0.4         compiler_4.2.1    cli_3.6.1         xml2_1.3.3       
## [21] labeling_0.4.2    bookdown_0.29     sass_0.4.2        scales_1.2.1     
## [25] survMisc_0.5.6    stringr_1.4.1     digest_0.6.29     rmarkdown_2.16   
## [29] pkgconfig_2.0.3   htmltools_0.5.3   highr_0.9         fastmap_1.1.0    
## [33] rlang_1.1.0       rstudioapi_0.14   farver_2.1.1      jquerylib_0.1.4  
## [37] generics_0.1.3    zoo_1.8-11        jsonlite_1.8.2    car_3.1-0        
## [41] magrittr_2.0.3    Matrix_1.5-1      Rcpp_1.0.9        munsell_0.5.0    
## [45] fansi_1.0.3       abind_1.4-5       lifecycle_1.0.3   stringi_1.7.8    
## [49] carData_3.0-5     MASS_7.3-58.1     plyr_1.8.7        parallel_4.2.1   
## [53] lattice_0.20-45   splines_4.2.1     gridtext_0.1.5    hms_1.1.2        
## [57] knitr_1.40        pillar_1.8.1      markdown_1.1      ggsignif_0.6.3   
## [61] reshape2_1.4.4    codetools_0.2-18  glue_1.6.2        evaluate_0.16    
## [65] vctrs_0.6.1       rmdformats_1.0.4  tzdb_0.3.0        foreach_1.5.2    
## [69] gtable_0.3.1      purrr_0.3.5       km.ci_0.5-6       assertthat_0.2.1 
## [73] cachem_1.0.6      xfun_0.33         gridBase_0.4-7    xtable_1.8-4     
## [77] broom_1.0.1       rstatix_0.7.0     iterators_1.0.14  beeswarm_0.4.0   
## [81] KMsurv_0.1-5      ellipsis_0.3.2